// * 我们肯定需要在工作后进行清理，无论工作过程中是否有 error 都不影响。

// * 代码片段1
try {
	// 工作
} catch (err) {
	// 处理 error
} finally {
	// 清理工作空间
}

// * 代码片段2
try {
	// 工作
} catch (err) {
	// 处理 error
}

// 清理工作空间

// ************************************************************************************

// * 上述代码片段实际例子：

function fn1() {
	try {
		console.log(1)
		return 1
	} catch (error) {
		console.log(2)
	} finally {
		console.log(3)
	}
}

console.log(fn1()) // 1 3 1.。会打印3

// * 如果没有 finally，则在 try 中存在 return 或者 catch 中存在 throw 再次抛出错误，那么就会存在跳出 try..catch 的行为，后面的代码将不再执行。所以使用 finally 更有优势。
function fn2() {
	try {
		console.log(1)
		return 1
	} catch (error) {
		console.log(2)
	}

	console.log(3)
}

console.log(fn2()) // 1 1。不会打印 3

function fn3() {
	try {
		console.log(1)
		throw new Error('错误信息1')
	} catch (error) {
		console.log(2)
		// 再次抛出错误
		throw new Error('错误信息2')
	}

	console.log(3)
}

console.log(fn3()) // 1 2。不会打印 3
